Soi is very easy to learn, but not so easy to play. The object of the game is to collect as many points as you can, by collecting all four suits of whatever cards you have on each round. For example, if you have 4 of hearts, your object is to collect the other three suits for that number. Namely, 4 of spades, 4 of clubs and 4 of diamonds. To do that, you simply ask any of the players to give you the specific card you want. For example, you can ask the player opposite to you for the card 4 of diamonds. If the player you ask has the card, he/she is oblidged to give it to you, and you can continue asking for another card the same player or any other player in exactly the same manner. If however the player you’ve asked for a card does not in fact own it, your turn is forfeited and THAT player (the one you have asked the card FROM) assumes the right to continue, using exactly the same technique. Namely, he can go on asking for any card he/she wishes, until he/she is unsuccessful. Once all four suits of a particular kind are collected, the quadruplet is deposited on the playing table, and does not participate in the game any more.
The Game:
The game consists of rounds with each player starting with 13 arbitrary cards. The cards are dealt on the table, (increase the size of the window if the cards start to overlap) and an arbitrary player goes first, based on some external criterion, say the one that draws the largest face value from the deck. Here, with the computer, the random number generator decides who will go first. A round is active for as long as there are any cards pending, in the hands of players. The round ends when all cards have been deposited. (The deposited cards are always shown regardless of who has them). At the end of a round, any collected quadruplet of four suits, is worth precicelly the face value of the card-kind it represents (for example, all four suits of 5 are worth five points) except all four Aces, which are worth 25 points. Jacks, Queens and Kings, are worth 10 points. At the end of a round, the cards are counted, and each player’s total score (i.e. the sum of the face values of the cards one has collected) is added to a cummulative total for each player. Then, the deck is re-shuffled, dealt again (13 cards each) and another round begins. Within any round, you must have AT LEAST ONE card of any suit, to have the right to ask for the other suits of that kind. Meaning, that if you have for example no cards of the kind 5, you cannot ask for fives. You can be thrown out from a round, if you run out of cards (i.e. if the other players get your cards). If you collect all the suits for your particular kinds and deposit them, i.e. when you finish playing with your cards, the player next to you counterclock-wise continues. (If you see the program taking an unusually long time to play, maybe it’s YOUR turn, so watch out...) The game ends when some global point value is reached, at the end of some round. This point value, can be variable. For example, you can set it at 200 points, or 500 points. Accordingly then, when the game ends, there will be an explicit winner (the one who exceeds the global point value) and three implicit loosers, who are numbered according to their total score.
Playing:
As you will undoubtedly notice, it is very important for you to remember who’s asking for what, and where the cards go. For that, the cards requested will appear moving from the player who’s been asked to the player who asks for them to inform you of the moves made. Any particular last moves will also be shown down in the place of the horizontal scroll bar. This is how you remember how cards are moved about. If you are good in remembering the moves, you can easilly retrieve the cards you are interested in from any player. Because the machine can be REALLY good in remembering what has occured, there are 3 levels of complexity. On the easiest level, the computer will remember only a couple of moves back. On the middle level, it will remember approximatelly the last 10 moves. On the impossible level, it will remember EVERYTHING, meaning of course, all the moves that have been made. (I could have programmed the thing to remember all the cards of any player, but then, this would be cheating...) Select your settings from the Game menu (‘Settings...’). This help text shows on ‘Help...’. Select ‘New Game’ to start a new game. Because this is a four player game, the computer assumes by default the role of the other three players. You can change this, and either force the computer to play by itself (all four players) or you can play against the computer using an ally- that is, play along in combination with other humans- by selecting the appropriate controls in the “Game” menu. You can change the global game value to whatever you wish from 100 to 1000. You can also change the Delay value for the messages that appear on the horizontal scroll bar, to anything between 200 and 600, since some models are faster than others. On my Quadra, a value of 200 is satisfactory. For 200 and up Mhz machines, set it to something around 500~600. If “Sort Cards” is checked, the machine will impose an ordering on the cards drawn for the computer opponents. This gives the human player a slight advantage, because one can guess where some cards are, depending on their positions. Human cards are always sorted for viewing convenience. (Thanx to Geert Jan Bex for this suggestion) The computer will always reveal the cards of the human player who’s turn it is to play, and wait for a response. Just click on the card area of any player, to request a specific card. As soon as you click, a dialog will appear to ask you which card you want from that player. Enter your choice as a string, consisting of the kind of the card, followed by the suit. Kinds are designated by their respective values (A,2,3,4,5,6,7,8,9,10,J,Q,K). Suits are designated by their first letter. (S,C,H,D, for Spades, Clubs, Hearts and Diamonds). For example, if you request 7 of Hearts, enter ‘7H’ or ‘7h’. For Jack of diamonds, enter ‘JD’ or ‘jd’, etc. Select ‘Memory...’, finally, if you get too despaired to play another game, for some (hard to read) help. ‘Score’ will show you the current score of all the players. But, have courage. This game does not depend entirelly on memory, and there are instances where luck and logic are of importance. So, even on the hardest level, a good memory guru can still beat the machine. So give it a shot and be brave. And if you succeed in beating the machine on the impossible level, my sincere congratulations!
The Program:
It took me two months to write this program from scratch. The most difficult part was the move generator engine, which I tried to test as much as I could, by playing many games myself. However, due to the complexity of the different card states, understand that a complete debugging of the engine is impossible. This program is free. I like free games, so I suppose you do as well. You can copy it, distribute it, put it in BBSs, and otherwise distribute it in any way you want, as long as this text remains intact. If you are interested, the source in THINK Pascal is available for $40. Send me a high density diskette in a self addressed envelope, with your check or international Money Order for $40 payable to the person below, (include $3.00 for postage and handling) and I will mail you the entire THINK project, along with all the supporting files, ready for compilation: